Some computing devices (e.g., mobile phones, laptop computers, desktop computers, servers, or other such devices) may be configured to transmit and receive data to other computing devices. Applications and modules of a computing device may transmit and receive data via one or more wired or wireless connections using a variety of protocols and transmission methods. For instance, a computing device may be connected to another computing device via a network connection, and an application executing on one computing device may use the network connection to send and receive data to an application of the other computing device. In some cases, the connection may be a wired connection, such as a universal serial bus (USB) cable.
When transmitting data, an operating system or other component of a computing device typically encodes the data in accordance with one or more protocols. The computing device may, for example, divide the data to be transmitted into chunks, often referred to as protocol data units (e.g., frames or packets). A protocol data unit, for various protocols, may include a part of the data that is to be transmitted (e.g., payload data) and a portion that is used to ensure the transmitted data is correctly received by the receiving computing device (e.g., a checksum). The checksum may, for instance, be a value calculated based on the payload data. In this way, the computing devices may maintain integrity of data during transmission and receipt. One example protocol is the high-level data link control (HDLC) protocol that provides transport layer framing for data payloads. HDLC provides byte-by-byte cyclical-redundancy-check (CRC) computation within each frame, thereby providing a degree of error checking.